home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 6
/
FM Towns Free Software Collection 6.iso
/
t_os
/
hirndsel
/
src.lzh
/
FILCHK.C
next >
Wrap
Text File
|
1992-12-16
|
4KB
|
118 lines
/************************************************************/
/* Main=HIRNDSEL.C */
/* 外部定義ファイル有無チェック&条件チェックルーチン[FILCHK.C] */
/************************************************************/
/* rtn = filchk(my_name, tiff_name ) ; */
/************************************************************/
/* IN : */
/* char *my_name ; : プログラム名(argv[0]) */
/* OUT: */
/* char *tiff_name ; : 条件一致時の指定ファイル名 */
/* RETURN : */
/* int rtn ; : チェック結果 */
/* = MATCH : 一致条件有り */
/* = NO_MATCH : 一致条件無し */
/* = NOTHING : 外部ファイル無し */
/************************************************************/
#include <stdio.h>
#include <memory.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
#include "hirndsel.h"
int
filchk( char *my_name, char *tiff_name )
{
struct tm *ltime ; /* システム日付等格納領域 */
clock_t t_time ; /* time格納領域 */
char cmpdate[SET_DATE_LENG] ; /* 比較日付格納領域 */
size_t leng ; /* 比較日付長 */
char rbuf[DEF_1MAX] ; /* 外部ファイル読み込み領域(一行分) */
char chk_fname[PATH_LENG] ; /* DEFファイル名格納領域 */
int rtn ; /* 各関数復帰値 */
int i ; /* ループカウンタ */
int def_leng ; /* 拡張子DEF長 */
FILE *ifp ; /* 入力ファイルポインタ */
/**************/
/* 変数初期化 */
/**************/
t_time = clock() ;
ltime = localtime( &t_time ) ;
memset( cmpdate, NULL, sizeof( cmpdate ) ) ;
memset( chk_fname, NULL, sizeof( chk_fname ) ) ;
memset( tiff_name, NULL, sizeof( tiff_name ) ) ;
def_leng = strlen( DEF ) ;
rtn =strlen(my_name);
strcpy(&chk_fname[0],my_name);
/* 外部ファイル名セット */
for( i=1 ; i < def_leng + 1 ; i++ )
{
if( my_name[rtn - i] == '.' )
break;
}
memcpy( &chk_fname[rtn - i], DEF, def_leng ) ;
/* 現在日時獲得(文字列) */
leng = strftime( cmpdate, sizeof(cmpdate), "%Y/%m/%d %H:%M %a", ltime ) ;
if(( ifp=fopen( chk_fname, "rb" ) ) == NULL )
return( NOTHING ) ; /* DEFファイル無し */
for( ; ; )
{
/* DEFファイル一行読み込み */
memset( rbuf, NULL, sizeof( rbuf ) ) ;
for( i = 0 ; i < DEF_1MAX ; i++ )
{
if( ( rtn = fread( &rbuf[i], 1, 1, ifp ) ) == NG )
{
fclose( ifp ) ;
return( NG ) ;
}
if( rtn == NULL )
{
fclose( ifp ) ;
return( NO_MATCH ) ; /* 最後まで読んだけど条件一致せず */
}
if( rbuf[i] == LF )
break ; /* 一行読み込み終わり */
}
if( rbuf[0] == '#' )
continue ; /* この行、コメント行 */
for(i = 0 ; i < leng ; i++ )
{
if( rbuf[i] == '?' )
rbuf[i] = cmpdate[i] ; /* 省略値の復元 */
}
/* 条件比較 */
if( memicmp( &cmpdate[0], &rbuf[0], leng ) == 0 )
{
/* TIFFファイル名獲得 */
for( i = TIFF_START ; i < TIFF_END ; i++ )
{
if( rbuf[i] == CR )
{
memcpy( &tiff_name[0], &rbuf[TIFF_START], i-21 ) ;
strcat( tiff_name, TIF ) ;
break ;
}
if( rbuf[i] == '.' )
{
memcpy( &tiff_name[0], &rbuf[TIFF_START], i-17 ) ;
break ;
}
}
fclose( ifp ) ;
return( MATCH ) ;
}
}
}